//
// Created by denglibin on 2021/4/8.
//

#ifndef OPENGL_MINGW_MESH_H
#define OPENGL_MINGW_MESH_H
#include "structs.h"
#include "../Shader.h"
#include <vector>
using namespace  std;
/**
 * 网格类
 */
class Mesh {
public:
    /*  网格数据  */
    vector<Vertex> vertices;
    /*索引数据*/
    vector<unsigned int> indices;
    /*纹理*/
    vector<Texture> textures;
    /*  函数  */
    Mesh(vector<Vertex>& vertices, vector<unsigned int>& indices, vector<Texture>& textures);
    /**
     * 绘制网格
     * 将一个着色器传入了Draw函数中，将着色器传入网格类中可以让我们在绘制之前设置一些uniform
     * @param shader
     */
    void Draw(Shader shader);
private:
    /*  渲染数据  */
    unsigned int VAO, VBO, EBO;
    /**
     * 初始化缓冲
     */
    void setupMesh();
};


#endif //OPENGL_MINGW_MESH_H
